一樣是彭彭老師的教學影片,以下附上網址:
https://www.youtube.com/watch?v=7qKFvUVpQXg&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=9
定義函式
1.1 使用 def 建立函式
1.2 參數名稱列表
呼叫函式
2.1 呼叫函式的語法
2.2 給定參數的資料
回傳與回傳值
3.1 使用 return 結束函式
3.2 使用 return 定義回傳值
3.3 呼叫函式後,如何串接回傳值
函式的目的:包裝需要重複利用的程式碼。
參數的目的:替函式加入更多彈性。
回傳值的目的:將函式內部的資料傳遞出來。
1.函式基礎
函式就是一個程式區塊,程式碼包裝在一個區塊中,方便隨時呼叫使用
先定義(建立)函式後,才能呼叫(使用)函式
2.定義函式
基本語法
函式內部的程式碼,若是沒有做函式呼叫就不會執行
def 函式名稱(參數名稱):
函式內部的程式碼
程式範例 定義一個函式
2.1 def sayHello(): # 定義一個印出 Hello 的函式
print("Hello")
2.2 def say(msg): # 定義可以印出任何訊息的函式
print(msg)
2.3 def add(n1,n2): # 定義一個可以做加法的函式
result=n1+n2
print(result)
3.呼叫函式
基本語法
函式名稱(參數資料)
3.1 def sayHello() # 定義一個印出 Hello 的函式
print("Hello")
sayHello() # 呼叫上方定義的函式
3.2 def say(msg): # 定義可以印出任何訊息的函式
print(msg)
say("Hello Function") # 呼叫上方定義的函式,將"Hello Function"放進參數 msg,並顯示出"Hello Function"
say("Hello Python") # 呼叫上方定義的函式,將"Hello Python"放進參數 msg,並顯示出"Hello Python"
3.3 def add(n1,n2): # 定義一個可以做加法的函式
result=n1+n2
print(result)
add(3,4) # 呼叫上方定義的函式,將 3,4 放到 n1,n2,並顯示出 7
add(7,8) # 呼叫上方定義的函式,將 7,8 放到 n1,n2,並顯示出 15
4.回傳值 return
基本語法
def 函式名稱(參數名稱):
函式內部的程式碼
return # 結束函式,回傳None
def 函式名稱(參數名稱):
函式內部的程式碼
return 資料 # 結束函式,回傳「資料」
4.1 def say(msg): # 定義可以印出任何訊息的函式
print(msg)
return # 結束函式,回傳None
value=say("Hello Function")
print(value) # 因為函式的最後固定回傳 Neon,所以最後會顯示出 None
4.2 def add(n1,n2):
result=n1+n2
return "Hello" # 函式回傳字串 Hello
value=add(3,4) # 呼叫函式,取得回傳值
print(value) # 印出 Hello
4.3 def add(n1,n2):
result=n1+n2
return result # 函式回傳 n1+n2 的結果
value=add(3,4) # 呼叫函式,取得回傳值
print(value) # 印出回傳值 resul,最後顯示出 7
5.綜合範例
def multiply(n1,n2): #先定義函式
print(n1*n2)
multiply(3,4) # 呼叫函式,並定義 n1,n1 為 3,4,最後顯示出 12
multiply(10,8) # 呼叫函式,並定義 n1,n1 為 10,8,最後顯示出 80
value=multiply(3,4) # 因為沒有定義 return,因此先按照函式 print n1*n2,並顯示none
print(value)
def multiply(n1,n2): #先定義函式
print(n1*n2)
return n1*n2
value=multiply(3,4) # 因為有定義回傳值,因此先按照函式 print n1*n2,再顯示一次 n1*n2
print(value)
value=multiply(3,4)+multiply(10,8) # 有定義回傳值才可以在外部直接進行運算,顯示出92
print(value)
6.函式可用來做程式的包裝:同樣的邏輯可以重複利用
def calculate(max):
sum=0
for n in range(1,max+1):
sum=sum+n
print(sum)
calculate(10) # 包裝後的函式可以只用一行就做完運算
calculate(20) # 且可以迅速地進行變化
我個人認為今天的函式很像自己定義一個數學公式,有需要的時候就自行編寫一個公式來用,著實是個很方便的功能,然而使用時會有不少的細節,尤其是回傳值要特別注意,以避免在寫程式的時候不小心就回傳了個 none 了。